//
// Created by lfm on 25-4-6.
//
// #include <iostream>
// using namespace std;
// //提前让编译器知道Person类存在
// template<class T1, class T2>
// class Person;
// template<class T1, class T2>
// void printPerson2(Person<T1, T2> p)
// {
//     cout << "姓名: " << p.m_Name << " " << "年龄" << p.m_Age << endl;
// }
//
// template<class T1, class T2>
// class Person
// {
//     //全局函数类内实现
//     // friend void printPerson(Person <T1, T2> p)
//     // {
//     //     cout << "姓名: " << p.m_Name << " " << "年龄" << p.m_Age << endl;
//     // }
//     //全局函数类外实现
//     // 加空参数列表
//     //如果全局函数是类外实现需要让编译器提前知道函数存在
//     friend void printPerson2<>(Person <T1, T2> p);
// public:
//     Person(T1 name, T2 age)
//     {
//         this->m_Name = name;
//         this->m_Age = age;
//     }
// private:
//     T1 m_Name;
//     T2 m_Age;
// };
//
// //1.
// void test01()
// {
//     Person<string, int>p("TOm", 1000);
//     // printPerson(p);
// }
//
// //2.类外实现
// void test02()
// {
//     Person<string, int> p("Jerry", 20);
//     printPerson2(p);
// }
//
// int main()
// {
//     // test01();
//     test02();
//     return 0;
// }
